Concatenar strings con StringBuilder

Descripcion

Cuando tenemos que concatenar strings en bucle, en vez de hacerlo directamente con el operador + es mas óptimo hacerlo con un StringBuilder.

Si solo vamos a concatenar un string aislado (sin que sea una operación repetitiva), podríamos hacerlo directamente con el operador +.

Metodo

La implementación del StringBuilder es practicamente identica tanto en Java como en C#

Código para mostrar la diferencia entre operador + y StringBuilder:

import java.util.stream.IntStream;

public class App {
    public static void main(String[] args) {

        int[] numArray = IntStream.rangeClosed(1, 70000).toArray();

        //Usando operador +

        long startTime = System.currentTimeMillis();

        String cadena = "";

        for (int num : numArray) {
            cadena += num + ", ";
        }

        long endTime = System.currentTimeMillis();
        long executionTime = endTime - startTime;
        System.out.println("Tiempo de ejecución concatenando con el operador +: " + executionTime + "ms");


        //Usando StringBuilder

        startTime = System.currentTimeMillis();

        StringBuilder sb = new StringBuilder();

        for (int num : numArray) {
            sb.append(num);
            sb.append(", ");
        }

        endTime = System.currentTimeMillis();
        executionTime = endTime - startTime;
        System.out.println("Tiempo de ejecución con StringBuilder: " + executionTime + "ms");

    }
}

Como se puede ver en la ejecución, con el operador + tarda unos 3.600 milisegundos mientras que con el StringBuilder tarda 7 milisegundos.

Tags

Java | StringBuilder